/**
 * 版权所有(C)，上海勾芒信息科技，2017，所有权利保留。
 * 
 * 项目名：	cards-web
 * 文件名：	WxComponentAppCodeServiceImpl.java
 * 模块说明：	
 * 修改历史：
 * 2017年5月24日 - Debenson - 创建。
 */
package me.chanjar.weixin.component.api.app.impl;

import com.gomore.jeecg.common.Assert;
import com.google.gson.JsonObject;
import com.google.gson.JsonParser;

import cn.binarywang.wx.miniapp.api.WxMaMsgService;
import cn.binarywang.wx.miniapp.bean.WxMaKefuMessage;
import cn.binarywang.wx.miniapp.bean.WxMaTemplateMessage;
import me.chanjar.weixin.common.bean.result.WxError;
import me.chanjar.weixin.common.exception.WxErrorException;
import me.chanjar.weixin.component.api.WxCompServiceDelegate;

/**
 * 小程序代码管理
 * 
 * @author Debenson
 * @since 0.1
 */
public class WxCompMaMessageServiceImpl implements WxMaMsgService {
  public static final String BASE_URL = "https://api.weixin.qq.com/wxa";

  private static final JsonParser JSON_PARSER = new JsonParser();

  private final WxCompServiceDelegate delegate;

  public WxCompMaMessageServiceImpl(WxCompServiceDelegate delegate) {
    this.delegate = delegate;
  }

  @Override
  public boolean sendKefuMsg(WxMaKefuMessage message) throws WxErrorException {
    Assert.assertArgumentNotNull(message, "message");

    String responseContent = this.delegate.httpPost(WxMaMsgService.KEFU_MESSAGE_SEND_URL,
        message.toJson());
    return responseContent != null;
  }

  @Override
  public String sendTemplateMsg(WxMaTemplateMessage templateMessage) throws WxErrorException {
    Assert.assertArgumentNotNull(templateMessage, "templateMessage");

    String responseContent = this.delegate.httpPost(WxMaMsgService.TEMPLATE_MSG_SEND_URL,
        templateMessage.toJson());
    JsonObject jsonObject = JSON_PARSER.parse(responseContent).getAsJsonObject();
    if (jsonObject.get("errcode").getAsInt() == 0) {
      return jsonObject.get("msgid").getAsString();
    }
    throw new WxErrorException(WxError.fromJson(responseContent));
  }
}
